【番外編】Androidの爆速エミュレータ環境を構築する
※追記しました. OSXの方々は注意点もありますので、追記も併せてご覧ください 2012.10.17
Android爆速エミュレータ環境の作り方
Android開発者界隈のTwitter TLで、「Androidのエミュレータが低速で使い物にならないとか言って許されるのは小学生までだよねー。きゃははー」的な会話が繰り広げられていたので、これは知らないのはマズイのでは、という危機感から、一念発起し、爆速Androidエミュレータ環境の構築を試みました
Androidのエミュレータが低速で使い物にならないというのは、すでに過去の話だそうです。真の情報強者の方々は、すでに爆速エミュレータでの開発を行っているようです。中には、実機よりも早いので、実機代わりに使ってるという方もおられるようです
もうAndroidのエミュレータが遅いなんて言わせない!iPhoneのエミュレータに匹敵する(?)速度を手に入れましょう
準備
まず、SDK Managerやらは最新にしておきます
高速なエミュレータ環境の構築には、Googleさんではなく、Intelさんのお世話になります。まずは、各Androidのバージョンのシステムイメージを取ってきましょう
現在、2.3.7(GB)、4.0.4(ICS)、4.1.1(JB)のシステムイメージが公開されています。
Install Guide - Recommended Method.にも書いてありますが、一つずつ手順を追っていきましょう。ここでは、4.0.4(ICS)のイメージを例に解説します
- エミュレータのイメージを取得します
- 配置する場所は次の場所。API Versionが15なので下記に配置します
- 次にHardware Accelerated Execution Managerをインストールします
- zipを解凍するとインストーラーが出てくるので、exeを叩いてインストールします
- Android SDK Managerを開き、赤線のパッケージをインストールします
これで準備完了です
エミュレータを設定する
- Android Virtual Device Managerを開きます
- 「New」を押して、AVDのEdit画面を開きます
- CPU/ABIで「Intel Atom(x86)」を選択します
- Hardwareセクションの「New」を押して、「GPU emulation」を追加します
- GPU emulationは「yes」を選択します
- 起動します
- いつもよりぬるぬる動くはずです
これで設定は完了です。当然Hardware Accelerated Execution Managerは、一度導入すればOKなので、Ginger Bread、Jelly Beanのイメージも同様に導入できます
注意点
いくつかいじってみて、気づいた点があります
- スナップショットをEnableに設定していると起動にこける。GPU emulationと相性が悪いようで、スナップショットの設定をしているとエミュレータの起動にこけます
- OSXで次のようなエラーが表示される
emulator-x86[3293] <Error>: The function `CGSFlushWindow' is obsolete and will be removed in an upcoming update. Unfortunately, this application, or a library it uses, is using this obsolete function, and is thereby contributing to an overall degradation of system performance. Please use `CGSFlushWindowContentRegion' instead.
- WXGA720の解像度を指定するとなぜか落ちる
まとめ
iPhoneアプリケーションの開発を横目で見ながら、エミュレータが早くていいなぁと指をくわえていた皆さん。過去、エミュレータの動作が遅すぎて窓から放り投げた皆さん。是非、爆速になったエミュレータを導入してみてください。かなり使える速度になっているはずです!
追記
Mac OSX Mountain Lionを使われている方
コメントに @zaki50 さんからご指摘があった通り、OSごとクラッシュして落ちてしまう場合があるそうです。社内の方に協力してもらい、10.8.2で動作は確認しましたが、一応動いているようですので、100%再現性があるわけではないようです。HAXMのインストールに関しては、控えた方が無難かもしれません。 @zaki50さん 貴重な情報をいただきありがとうございました!
イメージの取得について
@emboss さんより情報をいただきました。Android SDK Managerでもシステムイメージを取得できるようです。自分の環境でも確認できました。 @emboss さん 貴重な情報をいただきありがとうございました!
Macでエミュレータの表示がおかしくなる
OSX Mountain Lionでは、エミュレータの表示がおかしくなる報告が上がっているようです。社内の方々にも協力してもらい、データを収集してみました。同じOS Versionでも表示がおかしくなる人と特に問題がない方もいるので、まだ原因の特定には至っていません。Macで開発されている方は、注意してください
天地逆転
ステータスバーが下に移動する
ICSで日本語入力をしようとすると落ちる
ICS(4.0.3)のイメージで日本語入力をソフトウェアキーボードを使用して行うと、エミュレータが不正終了するようです
JB(4.1.1)のエミュレータでは、同じように日本語入力をソフトウェアキーボードを使用しても問題ありませんでした。日本語入力が必要なアプリケーションを必要とする方は注意が必要です